home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / fax / src / faxd / Getty.h < prev    next >
C/C++ Source or Header  |  1994-08-01  |  3KB  |  77 lines

  1. /*    $Header: /usr/people/sam/fax/faxd/RCS/Getty.h,v 1.15 1994/02/28 14:14:34 sam Rel $ */
  2. /*
  3.  * Copyright (c) 1990, 1991, 1992, 1993, 1994 Sam Leffler
  4.  * Copyright (c) 1991, 1992, 1993, 1994 Silicon Graphics, Inc.
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and 
  7.  * its documentation for any purpose is hereby granted without fee, provided
  8.  * that (i) the above copyright notices and this permission notice appear in
  9.  * all copies of the software and related documentation, and (ii) the names of
  10.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  11.  * publicity relating to the software without the specific, prior written
  12.  * permission of Sam Leffler and Silicon Graphics.
  13.  * 
  14.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  15.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  16.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  17.  * 
  18.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  19.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  20.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  22.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  23.  * OF THIS SOFTWARE.
  24.  */
  25. #ifndef _GETTY_
  26. #define    _GETTY_
  27.  
  28. /*
  29.  * Getty support base class.  Support for
  30.  * System V, BSD, etc. are derived from this. 
  31.  */
  32. #include "Str.h"
  33.  
  34. const int GETTY_MAXARGS        = 64;    // max args passed to getty
  35.  
  36. struct termios;
  37.  
  38. class Getty {
  39. private:
  40.     pid_t    pid;            // pid of getty/login process
  41.     u_int    timeout;        // if nonzero, timeout login attempts
  42.     fxStr    line;            // device name
  43.     fxStr    speed;            // line speed
  44.     char*    argv[GETTY_MAXARGS];    // argv passed to getty
  45.     fxStr    argbuf;            // stash for argv strings
  46.  
  47.     void setupArgv(const char* args);
  48. protected:
  49.     Getty(const fxStr& line, const fxStr& speed, u_int timeout = 60);
  50.  
  51.     static const fxStr getty;        // getty program
  52.  
  53.     virtual void setupSession(int modemFd) = 0;
  54.  
  55.     virtual void error(const char* fmt, ...);
  56.     virtual void fatal(const char* fmt, ...);
  57. public:
  58.     virtual ~Getty();
  59.  
  60.     virtual void run(int fd, const char* args);
  61.     virtual fxBool wait(int& status, fxBool block = FALSE) = 0;
  62.     virtual void hangup();
  63.  
  64.     pid_t getPID();
  65.     void setPID(pid_t);
  66.  
  67.     const char* getLine();
  68.  
  69.     void setTimeout(u_int);
  70. };
  71. inline pid_t Getty::getPID()        { return pid; }
  72. inline void Getty::setPID(pid_t p)    { pid = p; }
  73. inline const char* Getty::getLine()    { return line; }
  74.  
  75. extern Getty* OSnewGetty(const fxStr& dev, const fxStr& speed);
  76. #endif /* _GETTY_ */
  77.